package com.jielin.handling.mapper.tsuspect;

import com.jielin.handling.entity.suspectandcase.SuspectAndCase;
import com.jielin.handling.entity.tsuspect.SuspectVo;
import com.jielin.handling.entity.tsuspect.TSuspec;
import com.jielin.handling.entity.virtual.Virtual;
import com.jielin.handling.entity.vo.CasePicVo;
import com.jielin.handling.entity.vo.CaseasSociationVo;
import com.jielin.handling.entity.vo.PoliceVo;
import com.jielin.handling.entity.vo.TSuspecListVo;

import org.apache.ibatis.annotations.Param;
import com.jielin.handling.entity.tsuspect.DecicesStateVo;

import java.util.List;
import java.util.Map;

public interface TSuspecMapper {
    int deleteByPrimaryKey(String id);

    int insert(TSuspec record);

    int insertSelective(TSuspec record);

    TSuspec selectByPrimaryKey(String id);

    int updateByPrimaryKey(TSuspec record);

    List<TSuspec> selectSusceptListBySearch(SuspectVo vo);//人員切換查詢

    int savePhoto(@Param("path") String path, @Param("id") String id);//嫌疑人头像保存

    int highMeter(@Param("path") String path, @Param("id") String id, @Param("suspectId") String suspectId);//高拍仪头像拍照

    int updateState(TSuspec tSuspec);//人员状态改变

    int updateSuspect(TSuspec tSuspec);//嫌疑人新增

    List<String> selectSuspectByIdValue(String idValue);//根据身份证号查询嫌疑人id（二次审讯）

    int updateIsNew(String id);//根据id改变嫌疑人二次审讯状态（二次审讯）

    void deleteVitual(String id);

    int creatId(String id);//嫌疑人id生成

    TSuspecListVo selectState(TSuspec tsuspect);//查询不同状态的嫌疑人

    List<DecicesStateVo> deviceState(String roomid);//根据房间id查询设备状态

    List<TSuspec> unRelated(TSuspec suspec);//查询未关联人员信息

    int updateRelatedCases(TSuspec suspec);//未关联人员更新

    TSuspec selectStatue(String id);//根据嫌疑人id查询嫌疑人的流程状态

    List<TSuspec> auditFailed(TSuspec suspec);//待上传文件列表

    List handlingState();//办案区实时状态

    List<TSuspec> countCase(TSuspec tsuspect);//案件类型统计列表

    CasePicVo casePic(String policeId);//根据民警id查询案件类型统计图


    List<CaseasSociationVo> aVRelation(String policeId);//执法音视频关联率

    List<String> selectNameByCase(String caseCode);//根据案件查询嫌疑人的信息(name)

    PoliceVo selectPolice(String id);//民警查询

    List<PoliceVo> selectRecorder(String policeId);//查询民警记录仪信息

    Integer handSusNumber(String policeCode);//办案区实时嫌疑人人数

    Integer handPoNumber(String poliCode);//办案区实时民警人数

    TSuspec selectById(String id);

    List<TSuspec> selectByStatus(TSuspec suspec);//统计各种状态人员信息

    List<TSuspec> selectByCaseCode(TSuspec suspec);//根据案件编号和民警编号查询民警关联案件嫌疑人(二次审讯)

    List<TSuspec> unSelectByCaseCode(TSuspec suspec);//根据案件编号和民警编号查询民警不关联案件嫌疑人(二次审讯)

    List<String> findIdByCordId(String cordId);// 根据嫌疑人证件号码查询嫌疑人id

    int updateFiled(TSuspec tSuspec);//嫌疑人其他在场人员信息

    List<TSuspec> selectCodeAndName(@Param("unitCode") String unitCode,@Param("name") String name);//案件编号和案件名称下拉框

    List<TSuspec> selectCompleteCase(@Param("unitCode") String unitCode,@Param("name") String name);//案件编号和案件名称下拉框

    List<TSuspec> selectAllCodeAndName(String unitCode);//所有案件编号和案件名称下拉框

    List<TSuspec> selectPoliceByUnitcode(String unitCode);//根据单位编号查询所有民警信息(活动人员陪同民警下拉框)

    List<TSuspec> relatedSuspect(String caseCode);//查询嫌疑人列表下拉框

    List<TSuspec> selectSuspectByCaseCode(String caseCode);//根据案件编号查询案件关联的所有嫌疑人

    List<TSuspec> selectAllSuspectByCaseCode(Map map);

    List<Virtual> selectVirtual(String virtualId);//嫌疑人虚率身份id

    List<PoliceVo> selectOnlyPolice(String unitCode);//只查询单位下所有办案民警

    String selectNameById(String id);// 根据嫌疑人id查询嫌疑人姓名

    int getCaseNumByPoliceId(TSuspec tSuspec);// 根据民警id查询该单位下的案件数量

    List<TSuspec> selectSuspectnameByCaseCode(String caseCode);//根据案件编号查询该案件下的所有嫌疑人姓名等信息(警综嫌疑人表)

    List<TSuspec> selectSuspectnameByUnitcode(String unitCode);//根据单位编号查询所有嫌疑人名称

    int selectFrequencyOfEnquiry(@Param("idValue") String idValue, @Param("handleUnitCode") String handleUnitCode);//通过身份账号和单位编号查询该嫌疑人第几次审讯

    int addSuspect(SuspectAndCase suspectAndCase);//嫌疑人添加

    int selectByCaseCodeAndIdValue(SuspectAndCase suspectAndCase);//通过案件编号和身份证号查询是否有这一条记录

    int updateSuspect2(SuspectAndCase suspectAndCase);//嫌疑人新增

    SuspectAndCase selectSuspectById(String id);//根据id查询嫌疑人

    List<TSuspec> selectSuspectNameByHandleUnitCode(String unitCode);//根据单位编号查询案管中心审核已经通过的所有嫌疑人姓名


    /**
     * 单位名称-警员名称-警号
     *
     * @param suspectId
     * @return
     */
    String selectUnitNamePoliceNamePoliceCodeBySusId(String suspectId);

    void updateIsTwotrial(String id);
}